package com.zhi.analysis

import android.app.Application
import com.zhi.analysis.event.IAnalyticsEvent
import com.zhi.analysis.util.AdjustUtil
import com.zhi.analysis.util.AdvertIdUtil
import com.zhi.analysis.util.FacebookUtil
import com.zhi.analysis.util.GoogleInstallUtil

object AnalyticsUtil {

    /**
     * 初始化分析模块
     *
     * @param context Application
     */
    fun init(context: Application) {
        /** 初始化google install referrer */
        GoogleInstallUtil.init(context) {
            /** 保存渠道信息*/
            saveGoogleInstallInfo()
        }

        /** 初始化广告id */
        AdvertIdUtil.init(context) { _, _ ->
            /** 保存渠道信息*/
            saveGoogleInstallInfo()
        }

        /** 初始化adjust信息 */
        AdjustUtil.init(context)

        /** 初始化facebook */
        FacebookUtil.init(context)
    }

    /**
     * 打点
     * 主要对注册、申贷这两个结果记录打点
     * 均是接口返回成功后触发打点
     *
     * @param event 事件名
     */
    fun addEvent(event: IAnalyticsEvent) {
        AdjustUtil.addEvent(event)
        FacebookUtil.addEvent(event)
    }

    /**
     * 打点
     * 主要对注册、申贷这两个结果记录打点
     * 均是接口返回成功后触发打点
     */
    fun addApplyEvent() {
        AdjustUtil.addEvent(IAnalyticsEvent.AT_LOAN_APPLY)
        FacebookUtil.addEvent(IAnalyticsEvent.AT_LOAN_APPLY)
    }

    /**
     * 打点
     * 主要对注册、申贷这两个结果记录打点
     * 均是接口返回成功后触发打点
     */
    fun addRegisterEvent() {
        AdjustUtil.addEvent(IAnalyticsEvent.AT_REGISTER)
        FacebookUtil.addEvent(IAnalyticsEvent.AT_REGISTER)
    }

    /**
     * 保存google s2s信息
     * **通常不用手动触发**
     * 1、启动页，触发保存
     */
    private fun saveGoogleInstallInfo() {
        GoogleInstallUtil.saveS2sInfo()
    }

    /**
     * 获取谷歌安装渠道信息
     */
    fun getInstallReferrer(): String {
        return GoogleInstallUtil.getInstallReferrer()
    }

    /**
     * 获取adId
     */
    fun getAdId(): String {
        return AdvertIdUtil.getAdId()
    }

    /**
     * 获取adEnabled
     */
    fun getAdEnabled(): Int {
        return AdvertIdUtil.getAdEnabled()
    }

    /**
     * 获取安卓Id
     */
    fun getAndroidId(): String {
        return AdvertIdUtil.getAndroidId()
    }
}